package com.zhku.orders.service;


import com.zhku.base.model.PageParams;
import com.zhku.base.model.PageResult;
import com.zhku.orders.model.dto.*;
import com.zhku.orders.model.po.TtOrders;
import com.zhku.orders.model.po.TtPayRecord;

import java.util.List;

/**
 * 订单相关的service接口
 */
public interface OrderService {

    /**
     * 创建商品订单
     * @param userId 用户id
     * @param addOrderDto 订单信息
     * @return 支付记录（包括二维码）
     */
    public PayRecordDto createOrder(String userId, AddOrderDto addOrderDto);

    /**
     * @description 查询支付记录
     * @param payNo  交易记录号
     */
    public TtPayRecord getPayRecordByPayno(String payNo);

    /**
     * 请求支付宝查询支付结果
     * @param payNo 支付记录id
     * @return 支付记录信息
     */
    public PayRecordDto queryPayResult(String payNo);

    /**
     * 保存支付状态
     * @param payStatusDto
     */
    public void saveAliPayStatus(PayStatusDto payStatusDto);

    /**
     * 用户查询单个订单
     * @param id
     * @return
     */
    public TtOrders getUserOrder(String id);

    /**
     * 分页查询用户订单
     * @param pageParams
     * @param queryUserOrder
     * @return
     */
    public PageResult<TtOrders> queryUserOrderList(PageParams pageParams, QueryUserOrder queryUserOrder);

    /**
     * 分页查询当前店铺订单
     * @param pageParams
     * @param queryShopOrder
     * @return
     */
    public PageResult<ReturnShopOrdersDto> queryShopOrderList(PageParams pageParams, QueryShopOrder queryShopOrder);

    /**
     * 查看十大最热门的商品
     * @return
     */
    PageResult<ReturnHotGoodsDto> getHotGoodsList();

    /**
     * 超出预期时间，删除订单
     * @param id
     */
    void deleteTimeOutOrder(String id);

    /**
     * 判断用户是否支付了订单
     * @param payNo
     * @return
     */
    Boolean payGoods(String payNo);
}
